#!/usr/bin/env python
"""This launches an echoing rep socket device using
zmq.devices.ThreadDevice, and runs router blocking numpy action.
The rep socket should remain responsive to pings during this time.
Use ping.py to see how responsive it is.
Authors
-------
* MinRK
"""
from __future__ import print_function

import time
import numpy
import zmq
from zmq import devices

ctx = zmq.Context()

dev = devices.ThreadDevice(zmq.FORWARDER, zmq.REP, -1)
dev.bind_in('tcp://127.0.0.1:10111')
dev.setsockopt_in(zmq.IDENTITY, b"whoda")
dev.start()

#wait for connections
time.sleep(1)

A = numpy.random.random((2**11,2**12))
print("starting blocking loop")
while True:
    tic = time.time()
    numpy.dot(A,A.transpose())
    print("blocked for %.3f s"%(time.time()-tic))